/**
 * Copyright (c) 2016-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 * 
 * @providesModule AfterEffectsTypes
 * @flow
 */
'use strict';

export type CompItem = {
  bgColor$__type__: "Array",
  comment: string,
  displayStartTime: number,
  dropFrame: true,
  duration: number,
  frameDuration: number,
  frameRate: number,
  hasVideo: true,
  height: number,
  hideShyLayers?: true,
  id: number,
  label: number,
  layers$__type__: "LayerCollection",
  motionBlurAdaptiveSampleLimit: number,
  motionBlurSamplesPerFrame: number,
  name: string,
  numLayers: number,
  parentFolder$__type__: "FolderItem",
  parentFolder$id: number,
  parentFolder$name: string,
  pixelAspect: number,
  renderer: "ADBE Advanced 3d",
  renderers$__type__: "Array",
  resolutionFactor$__type__: "Array",
  selectedLayers$__type__: "Array",
  selectedProperties$__type__: "Array",
  shutterAngle: number,
  shutterPhase: number,
  time: number,
  typeName: "Composition",
  usedIn$__type__: "Array",
  width: number,
  workAreaDuration: number,
  workAreaStart: number,
  __type__: "CompItem",
  layers: Array<AVLayer | ShapeLayer>,
}

export type AVLayer = {
  active?: true,
  audioEnabled: true,
  autoOrient: 4012,
  blendingMode: 5012,
  canSetCollapseTransformation: true,
  canSetEnabled: true,
  comment: string,
  containingComp$__type__: "CompItem",
  containingComp$id: number,
  containingComp$name: string,
  effectsActive: true,
  enabled?: true,
  frameBlendingType: 3812,
  hasVideo: true,
  height: number,
  inPoint: number,
  index: number,
  isModified?: true,
  isNameFromSource?: true,
  label: number,
  matchName: "ADBE AV Layer",
  name: string,
  nullLayer?: true,
  numProperties: number,
  outPoint: number,
  propertyDepth: number,
  propertyType: "NAMED_GROUP",
  quality: 4414,
  samplingQuality: 4612,
  selectedProperties$__type__: "Array",
  source$__type__: "CompItem" | "FootageItem",
  source$id: number,
  source$name: string,
  startTime: number,
  stretch: number,
  time: number,
  trackMatteType: number,
  width: number,
  __type__: "AVLayer",
  properties: Array<PropertyMarker | PropertyTimeRemapping | PropertyGroupMTrackers | PropertyGroupMaskParade | PropertyGroupEffectParade | PropertyGroupTransformGroup | PropertyGroupLayerStyles | PropertyGroupPlaneOptionsGroup | PropertyGroupExtrsnOptionsGroup | PropertyGroupMaterialOptionsGroup | PropertyGroupAudioGroup>,
  canSetTimeRemapEnabled?: true,
  collapseTransformation?: true,
  hasTrackMatte?: true,
  timeRemapEnabled?: true,
  isTrackMatte?: true,
  parent$__type__?: "AVLayer" | "ShapeLayer",
  parent$index?: number,
  parent$name?: string,
  isNameSet?: true,
  adjustmentLayer?: true,
  selected?: true,
}

export type PropertyMarker = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Marker",
  name: "Marker",
  numKeys: number,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "MARKER",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Object",
  __type__: "Property",
  value: Marker,
  keyframes?: Keyframe<Marker>[],
  isModified?: true,
  isTimeVarying?: true,
}

export type Marker = {
  chapter: string,
  comment: string,
  cuePointName: string,
  duration: number,
  eventCuePoint: boolean,
  frameTarget: string,
  url: string,
}

export type PropertyTimeRemapping = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Time Remapping",
  maxValue: number,
  minValue: number,
  name: "Time Remap",
  numKeys: number,
  parentProperty$__type__: "AVLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "seconds",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  canSetExpression?: true,
  expressionEnabled?: true,
  isModified?: true,
  isTimeVarying?: true,
}

export type PropertyGroupMTrackers = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE MTrackers",
  name: "Motion Trackers",
  numProperties: number,
  parentProperty$__type__: "AVLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "INDEXED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupMaskParade = {
  active?: true,
  enabled?: true,
  matchName: "ADBE Mask Parade",
  name: "Masks",
  numProperties: number,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "INDEXED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<MaskPropertyGroupMaskAtom>,
  isModified?: true,
}

export type PropertyGroupEffectParade = {
  active?: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Effect Parade",
  name: "Effects",
  numProperties: number,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "INDEXED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyGroupRamp | PropertyGroupDropShadow | PropertyGroupFill>,
}

export type PropertyGroupFill = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isEffect: true,
  isModified?: true,
  matchName: "ADBE Fill",
  name: "Fill",
  numProperties: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Effects",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyFillMaskFill | PropertyFillMasksAll | PropertyFillColor | PropertyFillInvert | PropertyFillFeatherHorizontal | PropertyFillFeatherVertical | PropertyFillOpacity | PropertyGroupEffectBuiltInParams>,
}

export type PropertyFill = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,

  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Fill",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",

  selectedKeys$__type__: "Array",
  unitsText: "",
  // value: any,
  // keyframes?: Keyframe<any>[],
  __type__: "Property",

  name: string,
  matchName: string,
  hasMax?: true,
  hasMin?: true,
  maxValue?: number,
  minValue?: number,
  propertyValueType: "MASK_INDEX" | "OneD" | "COLOR",
}

export type PropertyFillMaskFill = PropertyFill & {
  matchName: "ADBE Fill-0001",
  name: "Fill Mask",
  propertyValueType: "MASK_INDEX",
}

export type PropertyFillMasksAll = PropertyFill & {
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Fill-0007",
  maxValue: 1,
  minValue: 0,
  name: "All Masks",
  propertyValueType: "OneD",
}

export type PropertyFillColor = PropertyFill & {
  canSetExpression: true,
  canVaryOverTime: true,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isSpatial: true,
  matchName: "ADBE Fill-0002",
  maxValue: 3921568.62745098,
  minValue: -3921568.62745098,
  name: "Color",
  propertyValueType: "COLOR",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number,number,number,number],
  keyframes?: Keyframe<[number,number,number,number]>[],
}

export type PropertyFillInvert = PropertyFill & {
  canSetExpression: true,
  canVaryOverTime: true,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Fill-0006",
  maxValue: 1,
  minValue: 0,
  name: "Invert",
  propertyValueType: "OneD",
}

export type PropertyFillFeatherHorizontal = PropertyFill & {
  canSetExpression: true,
  canVaryOverTime: true,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Fill-0003",
  maxValue: 999,
  minValue: 0,
  name: "Horizontal Feather",
  propertyValueType: "OneD",
}

export type PropertyFillFeatherVertical = PropertyFill & {
  canSetExpression: true,
  canVaryOverTime: true,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Fill-0004",
  maxValue: 999,
  minValue: 0,
  name: "Vertical Feather",
  propertyValueType: "OneD",
}

export type PropertyFillOpacity = PropertyFill & {
  canSetExpression: true,
  canVaryOverTime: true,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Fill-0005",
  maxValue: 1,
  minValue: 0,
  name: "Opacity",
  propertyValueType: "OneD",
  unitsText: "percent",
}

export type PropertyGroupEffectBuiltInParams = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Effect Built In Params",
  name: "Compositing Options",
  numProperties: 2,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow" | "Fill" | "Gradient Ramp",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupTransformGroup = {
  active?: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Transform Group",
  name: "Transform",
  numProperties: number,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyAnchorPoint | PropertyPosition | PropertyPosition_0 | PropertyPosition_1 | PropertyPosition_2 | PropertyScale | PropertyOrientation | PropertyRotateX | PropertyRotateY | PropertyRotateZ | PropertyOpacity | PropertyEnvirAppearinReflect>,
}

export type PropertyAnchorPoint = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Anchor Point",
  name: "Anchor Point",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "ThreeD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number],
  keyframes?: Keyframe<[number, number, number]>[],
  isModified?: true,
  isTimeVarying?: true,
}

export type PropertyPosition = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSeparationLeader: true,
  isSpatial: true,
  matchName: "ADBE Position",
  name: "Position",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "ThreeD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number],
  keyframes?: Keyframe<[number, number, number]>[],
  isModified?: true,
  isTimeVarying?: true,
  expressionEnabled?: true,
}

export type PropertyPosition_0 = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  isSeparationFollower: true,
  matchName: "ADBE Position_0",
  name: "X Position",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  separationDimension: 0,
  separationLeader$__type__: "Property",
  separationLeader$name: "Position",
  unitsText: "pixels",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyPosition_1 = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  isSeparationFollower: true,
  matchName: "ADBE Position_1",
  name: "Y Position",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  separationDimension: 1,
  separationLeader$__type__: "Property",
  separationLeader$name: "Position",
  unitsText: "pixels",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyPosition_2 = {
  isModified?: true,
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSeparationFollower: true,
  matchName: "ADBE Position_2",
  name: "Z Position",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  separationDimension: 2,
  separationLeader$__type__: "Property",
  separationLeader$name: "Position",
  unitsText: "pixels",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyScale = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Scale",
  name: "Scale",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "ThreeD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number],
  keyframes?: Keyframe<[number, number, number]>[],
  isModified?: true,
  isTimeVarying?: true,
  expressionEnabled?: true,
}

export type PropertyOrientation = {
  isModified?: true,
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Orientation",
  name: "Orientation",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "ThreeD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number],
  keyframes?: Keyframe<[number, number, number]>[],
}

export type PropertyRotateX = {
  isModified?: true,
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Rotate X",
  name: "X Rotation",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyRotateY = {
  isModified?: true,
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Rotate Y",
  name: "Y Rotation",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyRotateZ = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Rotate Z",
  name: "Rotation",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  expressionEnabled?: true,
  isModified?: true,
  isTimeVarying?: true,
}

export type PropertyOpacity = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Opacity",
  maxValue: 100,
  minValue: 0,
  name: "Opacity",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isModified?: true,
  isTimeVarying?: true,
}

export type PropertyEnvirAppearinReflect = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Envir Appear in Reflect",
  name: "Appears in Reflections",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupLayerStyles = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Layer Styles",
  name: "Layer Styles",
  numProperties: 11,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupPlaneOptionsGroup = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Plane Options Group",
  name: "Geometry Options",
  numProperties: 2,
  parentProperty$__type__: "AVLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupExtrsnOptionsGroup = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Extrsn Options Group",
  name: "Geometry Options",
  numProperties: 5,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupMaterialOptionsGroup = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Material Options Group",
  name: "Material Options",
  numProperties: 16,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupAudioGroup = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Audio Group",
  name: "Audio",
  numProperties: 1,
  parentProperty$__type__: "AVLayer" | "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type ShapeLayer = {
  audioEnabled: true,
  autoOrient: 4012,
  blendingMode: number,
  canSetEnabled: true,
  collapseTransformation: true,
  comment: "",
  containingComp$__type__: "CompItem",
  containingComp$id: number,
  containingComp$name: string,
  effectsActive: true,
  frameBlendingType: 3812,
  hasVideo: true,
  height: number,
  inPoint: number,
  index: number,
  isModified?: true,
  isNameSet: true,
  label: number,
  matchName: "ADBE Vector Layer",
  name: string,
  numProperties: 9,
  outPoint: number,
  propertyDepth: 0,
  propertyType: "NAMED_GROUP",
  quality: 4414,
  samplingQuality: 4612,
  selectedProperties$__type__: "Array",
  startTime: number,
  stretch: 100,
  time: number,
  trackMatteType: number,
  width: number,
  __type__: "ShapeLayer",
  properties: Array<PropertyMarker | PropertyGroupRootVectorsGroup | PropertyGroupMaskParade | PropertyGroupEffectParade | PropertyGroupTransformGroup | PropertyGroupLayerStyles | PropertyGroupExtrsnOptionsGroup | PropertyGroupMaterialOptionsGroup | PropertyGroupAudioGroup>,
  active?: true,
  enabled?: true,
  shy?: true,
  parent$__type__?: "AVLayer" | "ShapeLayer",
  parent$index?: number,
  parent$name?: string,
  isTrackMatte?: true,
  hasTrackMatte?: true,
}

export type PropertyGroupRootVectorsGroup = {
  active?: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Root Vectors Group",
  name: "Contents",
  numProperties: number,
  parentProperty$__type__: "ShapeLayer",
  parentProperty$index: number,
  parentProperty$name: string,
  propertyDepth: 1,
  propertyIndex: number,
  propertyType: "INDEXED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyGroupVectorGroup | PropertyGroupVectorFilterRC | PropertyGroupVectorFilterOffset>,
}

export type PropertyGroupVectorGroup = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Group",
  name: string,
  numProperties: 4,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorBlendMode | PropertyGroupVectorsGroup | PropertyGroupVectorTransformGroup | PropertyGroupVectorMaterialsGroup>,
}

export type PropertyVectorBlendMode = {
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Blend Mode",
  maxValue: 29,
  minValue: 1,
  name: "Blend Mode",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isModified?: true,
}

export type PropertyGroupVectorsGroup = {
  active?: true,
  elided: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vectors Group",
  name: "Contents",
  numProperties: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "INDEXED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyGroupVectorShapeGroup | PropertyGroupVectorGroup | PropertyGroupVectorGraphicFill | PropertyGroupVectorGraphicStroke | PropertyGroupVectorFilterMerge | PropertyGroupVectorFilterRC | PropertyGroupVectorShapeStar | PropertyGroupVectorShapeRect | PropertyGroupVectorFilterTrim>,
}

export type PropertyGroupVectorShapeGroup = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Shape - Group",
  name: "Path 1" | "Path 2" | "Path 3" | "Path 4",
  numProperties: 2,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorShapeDirection | PropertyVectorShape>,
}

export type PropertyVectorShapeDirection = {
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Shape Direction",
  maxValue: 3,
  minValue: 1,
  name: "Shape Direction",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isModified?: true,
}

export type PropertyVectorShape = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  isSpatial: true,
  matchName: "ADBE Vector Shape",
  name: "Path",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "SHAPE",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Shape",
  __type__: "Property",
  value: Shape,
  keyframes?: Keyframe<Shape>[],
  isTimeVarying?: true,
  expressionEnabled?: true,
}

export type Shape = {
  closed: boolean,
  featherInterps: [],
  featherRadii: [],
  featherRelCornerAngles: [],
  featherRelSegLocs: [],
  featherSegLocs: [],
  featherTensions: [],
  featherTypes: [],
  inTangents: Array<[number, number]>,
  outTangents: Array<[number, number]>,
  vertices: Array<[number, number]>,
}

export type PropertyGroupVectorGraphicFill = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Graphic - Fill",
  name: "Fill 1",
  numProperties: 5,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorBlendMode | PropertyVectorCompositeOrder | PropertyVectorFillRule | PropertyVectorFillColor | PropertyVectorFillOpacity>,
}

export type PropertyVectorCompositeOrder = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Composite Order",
  maxValue: 2,
  minValue: 1,
  name: "Composite",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Fill 1" | "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorFillRule = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Fill Rule",
  maxValue: 2,
  minValue: 1,
  name: "Fill Rule",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Fill 1",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorFillColor = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isSpatial: true,
  matchName: "ADBE Vector Fill Color",
  maxValue: 3921568.62745098,
  minValue: -3921568.62745098,
  name: "Color",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Fill 1",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "COLOR",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number, number],
  keyframes?: Keyframe<[number, number, number, number]>[],
  expressionEnabled?: true,
  isTimeVarying?: true,
}

export type PropertyVectorFillOpacity = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Fill Opacity",
  maxValue: 100,
  minValue: 0,
  name: "Opacity",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Fill 1",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupVectorTransformGroup = {
  active?: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Transform Group",
  name: "Transform",
  numProperties: 7,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorAnchor | PropertyVectorPosition | PropertyVectorScale | PropertyVectorSkew | PropertyVectorSkewAxis | PropertyVectorRotation | PropertyVectorGroupOpacity>,
}

export type PropertyVectorAnchor = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Vector Anchor",
  name: "Anchor Point",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
  isModified?: true,
}

export type PropertyVectorPosition = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  isSpatial: true,
  matchName: "ADBE Vector Position",
  name: "Position",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
  expressionEnabled?: true,
  isTimeVarying?: true,
}

export type PropertyVectorScale = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Vector Scale",
  name: "Scale",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
  isModified?: true,
  isTimeVarying?: true,
}

export type PropertyVectorSkew = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Skew",
  maxValue: 85,
  minValue: -85,
  name: "Skew",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorSkewAxis = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Vector Skew Axis",
  name: "Skew Axis",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorRotation = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Vector Rotation",
  name: "Rotation",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isModified?: true,
  isTimeVarying?: true,
  expressionEnabled?: true,
}

export type PropertyVectorGroupOpacity = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Group Opacity",
  maxValue: 100,
  minValue: 0,
  name: "Opacity",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Transform",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isModified?: true,
  isTimeVarying?: true,
  expressionEnabled?: true,
}

export type PropertyGroupVectorMaterialsGroup = {
  isModified?: true,
  active?: true,
  enabled?: true,
  matchName: "ADBE Vector Materials Group",
  name: "Material Options",
  numProperties: 48,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: string,
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: [],
}

export type PropertyGroupVectorGraphicStroke = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Graphic - Stroke",
  name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  numProperties: 9,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorBlendMode | PropertyVectorCompositeOrder | PropertyVectorStrokeColor | PropertyVectorStrokeOpacity | PropertyVectorStrokeWidth | PropertyVectorStrokeLineCap | PropertyVectorStrokeLineJoin | PropertyVectorStrokeMiterLimit | PropertyGroupVectorStrokeDashes>,
}

export type PropertyVectorStrokeColor = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isSpatial: true,
  matchName: "ADBE Vector Stroke Color",
  maxValue: 3921568.62745098,
  minValue: -3921568.62745098,
  name: "Color",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "COLOR",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number, number],
  keyframes?: Keyframe<[number, number, number, number]>[],
  isModified?: true,
  expressionEnabled?: true,
  isTimeVarying?: true,
}

export type PropertyVectorStrokeOpacity = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Stroke Opacity",
  maxValue: 100,
  minValue: 0,
  name: "Opacity",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isModified?: true,
  isTimeVarying?: true,
}

export type PropertyVectorStrokeWidth = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Width",
  minValue: 0,
  name: "Stroke Width",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  isTimeVarying?: true,
}

export type PropertyVectorStrokeLineCap = {
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Line Cap",
  maxValue: 3,
  minValue: 1,
  name: "Line Cap",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeLineJoin = {
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Line Join",
  maxValue: 3,
  minValue: 1,
  name: "Line Join",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeMiterLimit = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  matchName: "ADBE Vector Stroke Miter Limit",
  minValue: 1,
  name: "Miter Limit",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
  canSetExpression?: true,
  isModified?: true,
}

export type PropertyGroupVectorStrokeDashes = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  matchName: "ADBE Vector Stroke Dashes",
  name: "Dashes",
  numProperties: 7,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Stroke 1" | "Stroke 2" | "Stroke 3",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorStrokeDash1 | PropertyVectorStrokeGap1 | PropertyVectorStrokeDash2 | PropertyVectorStrokeGap2 | PropertyVectorStrokeDash3 | PropertyVectorStrokeGap3 | PropertyVectorStrokeOffset>,
  isModified?: true,
}

export type PropertyGroupVectorFilterMerge = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Filter - Merge",
  name: "Merge Paths 1" | "Merge Paths 2",
  numProperties: 1,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorMergeType>,
}

export type PropertyVectorMergeType = {
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Merge Type",
  maxValue: 5,
  minValue: 1,
  name: "Mode",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Merge Paths 1" | "Merge Paths 2",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeDash1 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Dash 1",
  minValue: 0,
  name: "Dash",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeGap1 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Gap 1",
  minValue: 0,
  name: "Gap",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeDash2 = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Dash 2",
  minValue: 0,
  name: "Dash 2",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeGap2 = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Gap 2",
  minValue: 0,
  name: "Gap 2",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeDash3 = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Dash 3",
  minValue: 0,
  name: "Dash 3",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeGap3 = {
  active?: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Stroke Gap 3",
  minValue: 0,
  name: "Gap 3",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStrokeOffset = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Vector Stroke Offset",
  name: "Offset",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Dashes",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupVectorShapeStar = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Shape - Star",
  name: "Polystar Path 1",
  numProperties: 9,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: 4,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorShapeDirection | PropertyVectorStarType | PropertyVectorStarPoints | PropertyVectorStarPosition | PropertyVectorStarRotation | PropertyVectorStarInnerRadius | PropertyVectorStarOuterRadius | PropertyVectorStarInnerRoundess | PropertyVectorStarOuterRoundess>,
}

export type PropertyVectorStarType = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Star Type",
  maxValue: 2,
  minValue: 1,
  name: "Type",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStarPoints = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Star Points",
  minValue: 3,
  name: "Points",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStarPosition = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Vector Star Position",
  name: "Position",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
}

export type PropertyVectorStarRotation = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Vector Star Rotation",
  name: "Rotation",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStarInnerRadius = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  isTimeVarying: true,
  matchName: "ADBE Vector Star Inner Radius",
  minValue: 0,
  name: "Inner Radius",
  numKeys: 12,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStarOuterRadius = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  isTimeVarying: true,
  matchName: "ADBE Vector Star Outer Radius",
  minValue: 0,
  name: "Outer Radius",
  numKeys: 12,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStarInnerRoundess = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  matchName: "ADBE Vector Star Inner Roundess",
  name: "Inner Roundness",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorStarOuterRoundess = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  matchName: "ADBE Vector Star Outer Roundess",
  name: "Outer Roundness",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Polystar Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupVectorFilterRC = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Filter - RC",
  name: "Round Corners 1",
  numProperties: 1,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorRoundCornerRadius>,
}

export type PropertyVectorRoundCornerRadius = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector RoundCorner Radius",
  minValue: 0,
  name: "Radius",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Round Corners 1",
  propertyDepth: number,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupVectorShapeRect = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Shape - Rect",
  name: "Rectangle Path 1",
  numProperties: 4,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: 4,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorShapeDirection | PropertyVectorRectSize | PropertyVectorRectPosition | PropertyVectorRectRoundness>,
}

export type PropertyVectorRectSize = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Vector Rect Size",
  minValue: 0,
  name: "Size",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Rectangle Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
}

export type PropertyVectorRectPosition = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Vector Rect Position",
  name: "Position",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Rectangle Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
}

export type PropertyVectorRectRoundness = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  matchName: "ADBE Vector Rect Roundness",
  minValue: 0,
  name: "Roundness",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Rectangle Path 1",
  propertyDepth: 5,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type MaskPropertyGroupMaskAtom = {
  active?: true,
  color$__type__: "Array",
  enabled?: true,
  isMask: true,
  isModified?: true,
  maskFeatherFalloff: 7012,
  maskMode: number,
  maskMotionBlur: 6812,
  matchName: "ADBE Mask Atom",
  name: "Mask 1",
  numProperties: 4,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Masks",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "MaskPropertyGroup",
  properties: Array<PropertyMaskShape | PropertyMaskFeather | PropertyMaskOpacity | PropertyMaskOffset>,
  locked?: true,
}

export type PropertyMaskShape = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  isSpatial: true,
  isTimeVarying?: true,
  matchName: "ADBE Mask Shape",
  name: "Mask Path",
  numKeys: number,
  parentProperty$__type__: "MaskPropertyGroup",
  parentProperty$name: "Mask 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "SHAPE",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Shape",
  __type__: "Property",
  value: Shape,
  keyframes?: Keyframe<Shape>[],
}

export type PropertyMaskFeather = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Mask Feather",
  maxValue: 1000,
  minValue: 0,
  name: "Mask Feather",
  numKeys: 0,
  parentProperty$__type__: "MaskPropertyGroup",
  parentProperty$name: "Mask 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
}

export type PropertyMaskOpacity = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Mask Opacity",
  maxValue: 100,
  minValue: 0,
  name: "Mask Opacity",
  numKeys: 0,
  parentProperty$__type__: "MaskPropertyGroup",
  parentProperty$name: "Mask 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyMaskOffset = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Mask Offset",
  maxValue: 32000,
  minValue: -32000,
  name: "Mask Expansion",
  numKeys: 0,
  parentProperty$__type__: "MaskPropertyGroup",
  parentProperty$name: "Mask 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupVectorFilterTrim = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Filter - Trim",
  name: "Trim Paths 1",
  numProperties: 4,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: 6,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorTrimStart | PropertyVectorTrimEnd | PropertyVectorTrimOffset | PropertyVectorTrimType>,
}

export type PropertyVectorTrimStart = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Trim Start",
  maxValue: 100,
  minValue: 0,
  name: "Start",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Trim Paths 1",
  propertyDepth: 7,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorTrimEnd = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isTimeVarying: true,
  matchName: "ADBE Vector Trim End",
  maxValue: 100,
  minValue: 0,
  name: "End",
  numKeys: number,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Trim Paths 1",
  propertyDepth: 7,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorTrimOffset = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  matchName: "ADBE Vector Trim Offset",
  name: "Offset",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Trim Paths 1",
  propertyDepth: 7,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorTrimType = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Trim Type",
  maxValue: 2,
  minValue: 1,
  name: "Trim Multiple Shapes",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Trim Paths 1",
  propertyDepth: 7,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupDropShadow = {
  canSetEnabled: true,
  isEffect: true,
  isModified?: true,
  matchName: "ADBE Drop Shadow",
  name: "Drop Shadow",
  numProperties: 7,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Effects",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyDropShadow0001 | PropertyDropShadow0002 | PropertyDropShadow0003 | PropertyDropShadow0004 | PropertyDropShadow0005 | PropertyDropShadow0006 | PropertyGroupEffectBuiltInParams>,
}

export type PropertyDropShadow0001 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isSpatial: true,
  matchName: "ADBE Drop Shadow-0001",
  maxValue: 3921568.62745098,
  minValue: -3921568.62745098,
  name: "Shadow Color",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "COLOR",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number, number],
  keyframes?: Keyframe<[number, number, number, number]>[],
}

export type PropertyDropShadow0002 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  matchName: "ADBE Drop Shadow-0002",
  maxValue: 255,
  minValue: 0,
  name: "Opacity",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyDropShadow0003 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  matchName: "ADBE Drop Shadow-0003",
  name: "Direction",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "degrees",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyDropShadow0004 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isTimeVarying: true,
  matchName: "ADBE Drop Shadow-0004",
  maxValue: 4000,
  minValue: 0,
  name: "Distance",
  numKeys: 3,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyDropShadow0005 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Drop Shadow-0005",
  maxValue: 30000,
  minValue: 0,
  name: "Softness",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyDropShadow0006 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Drop Shadow-0006",
  maxValue: 1,
  minValue: 0,
  name: "Shadow Only",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Drop Shadow",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyGroupRamp = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isEffect: true,
  isModified?: true,
  matchName: "ADBE Ramp",
  name: "Gradient Ramp",
  numProperties: 9,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Effects",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyRamp0001 | PropertyRamp0002 | PropertyRamp0003 | PropertyRamp0004 | PropertyRamp0005 | PropertyRamp0006 | PropertyRamp0007 | PropertyRamp0008 | PropertyGroupEffectBuiltInParams>,
}

export type PropertyRamp0001 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Ramp-0001",
  name: "Start of Ramp",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
}

export type PropertyRamp0002 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isSpatial: true,
  isTimeVarying: true,
  matchName: "ADBE Ramp-0002",
  maxValue: 3921568.62745098,
  minValue: -3921568.62745098,
  name: "Start Color",
  numKeys: 3,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "COLOR",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number, number],
  keyframes?: Keyframe<[number, number, number, number]>[],
}

export type PropertyRamp0003 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isSpatial: true,
  matchName: "ADBE Ramp-0003",
  name: "End of Ramp",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "TwoD_SPATIAL",
  selectedKeys$__type__: "Array",
  unitsText: "pixels",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number],
  keyframes?: Keyframe<[number, number]>[],
}

export type PropertyRamp0004 = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  isModified?: true,
  isSpatial: true,
  isTimeVarying: true,
  matchName: "ADBE Ramp-0004",
  maxValue: 3921568.62745098,
  minValue: -3921568.62745098,
  name: "End Color",
  numKeys: 3,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "COLOR",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value$__type__: "Array",
  __type__: "Property",
  value: [number, number, number, number],
  keyframes?: Keyframe<[number, number, number, number]>[],
}

export type PropertyRamp0005 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Ramp-0005",
  maxValue: 2,
  minValue: 1,
  name: "Ramp Shape",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyRamp0006 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Ramp-0006",
  maxValue: 512,
  minValue: 0,
  name: "Ramp Scatter",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyRamp0007 = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Ramp-0007",
  maxValue: 1,
  minValue: 0,
  name: "Blend With Original",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "percent",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyRamp0008 = {
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  matchName: "ADBE Ramp-0008",
  name: "",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Gradient Ramp",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "NO_VALUE",
  selectedKeys$__type__: "Array",
  unitsText: "",
  __type__: "Property",
}

export type PropertyGroupVectorFilterOffset = {
  active?: true,
  canSetEnabled: true,
  enabled?: true,
  isModified?: true,
  matchName: "ADBE Vector Filter - Offset",
  name: "Offset Paths 1",
  numProperties: 3,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Contents",
  propertyDepth: 2,
  propertyIndex: number,
  propertyType: "NAMED_GROUP",
  __type__: "PropertyGroup",
  properties: Array<PropertyVectorOffsetAmount | PropertyVectorOffsetLineJoin | PropertyVectorOffsetMiterLimit>,
}

export type PropertyVectorOffsetAmount = {
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  isModified?: true,
  matchName: "ADBE Vector Offset Amount",
  name: "Amount",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Offset Paths 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorOffsetLineJoin = {
  isModified?: true,
  active?: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMax: true,
  hasMin: true,
  matchName: "ADBE Vector Offset Line Join",
  maxValue: 3,
  minValue: 1,
  name: "Line Join",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Offset Paths 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type PropertyVectorOffsetMiterLimit = {
  isModified?: true,
  active?: true,
  canSetExpression: true,
  canVaryOverTime: true,
  enabled?: true,
  expression: string,
  expressionError: string,
  hasMin: true,
  matchName: "ADBE Vector Offset Miter Limit",
  minValue: 1,
  name: "Miter Limit",
  numKeys: 0,
  parentProperty$__type__: "PropertyGroup",
  parentProperty$name: "Offset Paths 1",
  propertyDepth: 3,
  propertyIndex: number,
  propertyType: "PROPERTY",
  propertyValueType: "OneD",
  selectedKeys$__type__: "Array",
  unitsText: "",
  value: number,
  keyframes?: Keyframe<number>[],
  __type__: "Property",
}

export type Keyframe<V> = {
  index: number,
  time: number,
  value: V,
  inInterpolationType: "BEZIER" | "HOLD" | "LINEAR",
  outInterpolationType: "BEZIER" | "HOLD" | "LINEAR",
  inSpatialTangent?: [number, number, number] | [number, number],
  outSpatialTangent?: [number, number, number] | [number, number],
  inTemporalEase: TemporalEase[],
  outTemporalEase: TemporalEase[],
  temporalContinuous: boolean,
  temporalAutoBezier: boolean,
  spatialContinuous?: boolean,
  spatialAutoBezier?: boolean,
  roving?: boolean,
  selected: boolean,
}

export type TemporalEase = {
  influence: number,
  speed: number,
}

export type PropertyWithNumberValue = PropertyTimeRemapping | PropertyPosition_0 | PropertyPosition_1 | PropertyPosition_2 | PropertyRotateX | PropertyRotateY | PropertyRotateZ | PropertyOpacity | PropertyEnvirAppearinReflect | PropertyVectorBlendMode | PropertyVectorShapeDirection | PropertyVectorCompositeOrder | PropertyVectorFillRule | PropertyVectorFillOpacity | PropertyVectorSkew | PropertyVectorSkewAxis | PropertyVectorRotation | PropertyVectorGroupOpacity | PropertyVectorStrokeOpacity | PropertyVectorStrokeWidth | PropertyVectorStrokeLineCap | PropertyVectorStrokeLineJoin | PropertyVectorStrokeMiterLimit | PropertyVectorMergeType | PropertyVectorStrokeDash1 | PropertyVectorStrokeGap1 | PropertyVectorStrokeDash2 | PropertyVectorStrokeGap2 | PropertyVectorStrokeDash3 | PropertyVectorStrokeGap3 | PropertyVectorStrokeOffset | PropertyVectorStarType | PropertyVectorStarPoints | PropertyVectorStarRotation | PropertyVectorStarInnerRadius | PropertyVectorStarOuterRadius | PropertyVectorStarInnerRoundess | PropertyVectorStarOuterRoundess | PropertyVectorRoundCornerRadius | PropertyVectorRectRoundness | PropertyMaskOpacity | PropertyMaskOffset | PropertyVectorTrimStart | PropertyVectorTrimEnd | PropertyVectorTrimOffset | PropertyVectorTrimType | PropertyDropShadow0002 | PropertyDropShadow0003 | PropertyDropShadow0004 | PropertyDropShadow0005 | PropertyDropShadow0006 | PropertyRamp0005 | PropertyRamp0006 | PropertyRamp0007 | PropertyVectorOffsetAmount | PropertyVectorOffsetLineJoin | PropertyVectorOffsetMiterLimit;
export type PropertyWithNumberArrayValue = PropertyFillColor | PropertyAnchorPoint | PropertyPosition | PropertyScale | PropertyOrientation | PropertyVectorFillColor | PropertyVectorAnchor | PropertyVectorPosition | PropertyVectorScale | PropertyVectorStrokeColor | PropertyVectorStarPosition | PropertyVectorRectSize | PropertyVectorRectPosition | PropertyMaskFeather | PropertyDropShadow0001 | PropertyRamp0001 | PropertyRamp0002 | PropertyRamp0003 | PropertyRamp0004;
